Enterprises are complex organizations that may employ long-lived software systems, such as Internet websites, that are accessible through a web-tier by a potentially unlimited number of end users. Over time, the content viewable through the website may change. The process of making content available to a website system so that the website system can distribute the content to a target audience (e.g., World Wide Web users, corporate intranet users or other audience) is generally referred to as publication. In some models of website publication, website content is developed in a development environment and then published to a production environment such that the production website system can provide content to the target audience. In some implementations, there may also be one or more test stages between the development and production environments.
A piece of content may go through a lifecycle that involves a workflow of editing, approvals, publishing and so forth. In some cases, a user managing content for a website may wish to create and manage an arbitrary collection of content. One conventional solution is for a user to store a collection of content in a particular file system folder while performing a desired operation or set of operation on the content. However, this method changes the location of the content and may break references to the content. Furthermore, using a file system folder structure to create an arbitrary group of content requires additional coordination between all users (e.g., content contributors, content managers) who may need access to the content.
Some conventional web content management systems allowed users to “tag” content items. In these systems, a tag is added to part of the properties of a content item. Such tags are inflexible and can inadvertently disrupt a content item's lifecycle. Because tagging in this manner changes the properties of the content item, the content item becomes “dirty” and may have to go back through its lifecycle of approval and publication. When a large number of content items are tagged, a large number of items may need to be reprocessed. Republication of a large number of content items that have been tagged is costly in terms of system and network resources. Furthermore, republication of a large number of content items can cause the response time of a production system to suffer because the caching tier of the production system will refresh for content that the production system sees as updated content due to republication even though the actual content may not have changed.